package com.dao;

import com.entity.WeishengjianchaEntity;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;

import org.apache.ibatis.annotations.Param;
import com.entity.vo.WeishengjianchaVO;
import com.entity.view.WeishengjianchaView;

/**
 * 卫生检查数据访问层(DAO)
 * 负责与数据库交互，处理卫生检查相关的数据操作
 * 继承BaseMapper获取通用CRUD操作，并扩展特定的查询方法
 * @author 
 * @email 
 * @date 2023-06-28 12:23:14
 */
public interface WeishengjianchaDao extends BaseMapper<WeishengjianchaEntity> {
	
	/**
     * 查询并返回视图对象列表(VO)
     * VO对象通常是精简实体用于前端展示的数据模型
     * @param wrapper 查询条件包装器
     * @return 卫生检查VO对象列表
     */
	List<WeishengjianchaVO> selectListVO(@Param("ew") Wrapper<WeishengjianchaEntity> wrapper);
	
	/**
     * 查询并返回单个视图对象(VO)
     * @param wrapper 查询条件包装器
     * @return 单个卫生检查VO对象
     */
	WeishengjianchaVO selectVO(@Param("ew") Wrapper<WeishengjianchaEntity> wrapper);
	
	/**
     * 查询并返回视图列表
     * View对象通常包含更丰富的信息，可能关联了其他表的信息
     * @param wrapper 查询条件包装器
     * @return 卫生检查View对象列表
     */
	List<WeishengjianchaView> selectListView(@Param("ew") Wrapper<WeishengjianchaEntity> wrapper);

	/**
     * 分页查询并返回视图列表
     * @param page 分页对象，包含页码和每页大小
     * @param wrapper 查询条件包装器
     * @return 分页后的卫生检查View对象列表
     */
	List<WeishengjianchaView> selectListView(Pagination page,@Param("ew") Wrapper<WeishengjianchaEntity> wrapper);
	
	/**
     * 查询并返回单个视图对象
     * @param wrapper 查询条件包装器
     * @return 单个卫生检查View对象
     */
	WeishengjianchaView selectView(@Param("ew") Wrapper<WeishengjianchaEntity> wrapper);
	

    /**
     * 按指定值进行统计查询
     * 此方法用于生成数据统计结果，常用于图表展示
     * @param params 包含xColumn(横坐标)和yColumn(纵坐标)的参数
     * @param wrapper 查询条件包装器
     * @return 统计结果列表，每条记录对应一个统计点
     */
    List<Map<String, Object>> selectValue(@Param("params") Map<String, Object> params,@Param("ew") Wrapper<WeishengjianchaEntity> wrapper);

    /**
     * 按时间维度进行统计查询
     * 支持按日、月、年进行时间维度的数据统计
     * @param params 包含timeStatType(时间统计类型)的参数
     * @param wrapper 查询条件包装器
     * @return 按时间维度统计的结果列表
     */
    List<Map<String, Object>> selectTimeStatValue(@Param("params") Map<String, Object> params,@Param("ew") Wrapper<WeishengjianchaEntity> wrapper);

    /**
     * 按指定列进行分组统计
     * @param params 包含column(分组列名)的参数
     * @param wrapper 查询条件包装器
     * @return 分组统计结果列表
     */
    List<Map<String, Object>> selectGroup(@Param("params") Map<String, Object> params,@Param("ew") Wrapper<WeishengjianchaEntity> wrapper);

}
